/*
 * Copyright 2008 Max Kugland
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.splink.asbeangen.templates;

import java.util.List;

public interface IClassTemplate {
	
	public String getComment(List<String> comment);

	public String getOpenPackage(String packagename);

	public String getClosePackage();

	public String getImport(String classpath);

	public String getOpenClass(String classname);

	public String getOpenClassImplements(String classname, List<String> interfazes);

	public String getCloseClass();

	public String getParameter(String var, String type);

	public String getMember(String name, String type);

	public String getMemberAllocation(String name);

	public String getOpenConstructorHead(String name);

	public String getOpenConstructorBody(String name);

	public String getCloseConstructor();

	// ///////////////////////////////////////////////// Data related

	public String getGetMethod(String name, String returntype);

	public String getSetMethod(String name, String settype);

	public String getAccessMethod(String name, String accessor, String type);

	// ///////////////////////////////////////////////// Reader related
	public String getOpenReadMethod(String type);

	public String getClosePackMethod(String returntype);

	public String getReadAttribute(String dataTypeName, String attribute, boolean handleExeption, String type);

	public String getReadContent(String type);

	public String getReadPcData(String name, String type, boolean handleExeption);

	public String getReadSubReader(String type, String subelement, boolean handleExeption);

	public String getReadSubArReader(String type, String subelement, boolean handleExeption);

	public String getReadSubArReaderMethod(String subelement);
}
